home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 273_01 / tcutil.doc < prev    next >
Text File  |  1988-05-02  |  42KB  |  1,478 lines

  1.  
  2.                                TCUTIL
  3.  
  4.                           TurboC Utilities
  5.                           Developed By Jim Derr
  6.                           2425 Santa Cruz Ct.
  7.                           Santa Rosa, Ca. 95401
  8.  
  9.  
  10. This is may first attempt at distributing software.  I have found
  11. numerous execelant software tools and packages on BBS's and I hope
  12. that someone can find these routines usefull.
  13.  
  14. After I received TURBOC in the mail I was dismayed to find out that
  15. it did not contain any video or bios routines.  So in order to use
  16. TURBOC I set out looking for a commerical package and/or a shareware
  17. package to meet my needs.  The commerical packages were a little steep
  18. in price and the most of the shareware packaged were overkill.
  19.  
  20. I decided to develop a set of my own routines and distribute them to
  21. the BBS community.  This is my first cut at the routines with more
  22. and better things to come.  I have included the source code for all
  23. the routines.  All the routines have been tested using the tiny and
  24. small memory models.
  25.  
  26. Just to protect myself I do not guarantee these routines, use them
  27. at your own risk.  They have been tested on PC/XT's, 3270-PC's,
  28. Personal System/2 model 60, and Compaq Portables.  They should
  29. work on any good clone that is BIOS compatable.
  30.  
  31. I have also included the small library files for those of
  32. you that do not have access to a lib program.  Also included are
  33. bat files to compile and reproduce the lib file.
  34.  
  35. PLEASE NOTE THAT THERE ARE MANY HOURS OF WORK IN THESE ROUTINES.
  36. IF YOU FIND THEM USEFULL AND YOU USE THEM IN YOUR PROGRAMS PLEASE SEND
  37. $10 TO THE ADDRESS SHOWN ON PAGE 1 OF THIS DOCUMENT.
  38.  
  39. Files Included are:
  40.  
  41. tcutil.doc     the documentation file
  42. tcutil.h       the header file required by the routines
  43. tcutils.lib    the small model library file
  44. compall.bat    a batch file to compile all the source code.
  45. *.cc           source of functions that are written entirely in c.
  46. *.ca           source of functions that use inline assembler code.
  47.  
  48.  
  49.                       Notes on Using these routines:
  50.  
  51.  
  52. Most of these routines are fairly self explanitory.  However a few
  53. need some additional comments.
  54.  
  55. BEFORE USING ANY OF THESE ROUTINES IN YOUR PROGRAM YOU MUST!!!!!!!!!!!
  56. USE THE VIDEO_TYPE ROUTINES.
  57.  
  58. This routine sets up some global
  59. variables that the other routines will use.  If you complie your
  60. program and get an undefined refenece to any one of the following
  61. you forgot to use the video_type routine.
  62.                 bios, cga, ega, color, mono, scrseg.
  63.  
  64.  
  65. The make_window routine does not save the portion of the screen it
  66. is writing over.  There are times when I don't want to save the area
  67. and I don't want a routine assuming I want to save it.  If you want
  68. to save the information under the window use the save_scr and rest_scr
  69. functions to save and restore the information.
  70.  
  71. The save_scr function does not allocate memory for you, you must do
  72. it yourself.  This allows you the freedom to either allocate it
  73. statically or dynamically.  Included in the tcutil header file are
  74. two macros that will correctly calculate the amount of memory you
  75. need to allocate to save the information under a given window.
  76. The following two examples show how to use these macros:
  77.  
  78. STATIC ALLOCATION:------------------------------------------------------
  79. #define screen1_size setsize_w(0,0,24,79)  /*number of bytes needed to
  80. char save_screen1[screen1_size];             save a full screen with
  81.             .                                no shadow */
  82.             .
  83.             .
  84. save_scr(0,0,24,79,save_screen1);
  85.  
  86.  
  87.  
  88. DYNAMIC ALLOCATION:-----------------------------------------------------
  89. #define screen2_size setsize_ws(0,0,10,20) /*number of bytes needed to
  90. char *save_point;                            save a screen with the
  91. save_point = (char *)malloc(screen2_size);   coordinated of 0,0,10,20
  92.              .                               that will have a shadow */
  93.              .
  94.              .
  95. save_scr(0,0,10,20,save_point);
  96.  
  97.  
  98. There is also another macro in the TCUTIL.H file to aid you in
  99. defining attribute bytes.  To use it code your attributes as
  100. follows:
  101.  
  102. int attr1 = setatr(BLUE,BLACK,0,0);
  103.                     |     |   | |
  104. forground color-----+     |   | |
  105. background color----------+   | |
  106. blink-------------------------+ |   (where blink and bold is 0 or 1)
  107. bold----------------------------+
  108.  
  109.  
  110. Most of the routines do not return any values.  However if they do
  111. the value returned and it's type is shown in the documentation of
  112. the function.
  113.  
  114. RELEASE 2.0 10/19/87 UPDATES:
  115.  
  116. The following new functions have been added to release 2.0:
  117.  
  118. beep        activate the speaker.
  119. get_xa        read a keystoke and return normal and extended key codes.
  120. soundx      compute a soundex code for a string
  121. str_xform    transform characters in a string
  122.  
  123. The following functions have been enhanced or changed.
  124.  
  125. writef      enhanced for speed.
  126. get_line    enhanced/changed.  The function will now return any non-printable
  127.             character as an extended coded int.
  128. TCUTIL.H    extended coded ints are now defined in the header.
  129.  
  130. RELEASE 3.0 2/15/88 UPDATES:
  131.  
  132. The following new functions have been addded:
  133.  
  134. getfield    read a string from the screen under control of a format mask.
  135. xprintf     like printf but writes directly to the video buffer.
  136. melt        4 different ways to restore the screen.
  137.  
  138.  
  139.  
  140.  
  141. If you find any error or bugs please drop me a line.
  142. Also if there is some function
  143. you would like added to this library also drop me a line.
  144.  
  145.  
  146.                       !!!!ENJOY!!!!!
  147.  
  148. Jim Derr
  149. 2425 Santa Cruz Ct.
  150. Santa Rosa, Ca. 95401
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157. beep                                                                [BEEP.CC]
  158.  
  159. void     beep(unsigned int pitch, unsigned int nticks )
  160. /* Sound the speaker using indicated pitch for nticks long
  161.    for error sound use beep(440,3) beep(220,3)
  162. */       
  163.  
  164.  
  165. --------------------------------------------------------------------------
  166.  
  167.  
  168.  
  169.  
  170. box                                                                  [BOX.CC]
  171.  
  172. void box(int trow, int tcol, int lrow, int lcol, int wattr, int battr)
  173. /* This will draw a box using upper left row,col and lower right row,col
  174.    wattr is attribute character for center of box, battr is the border attr.    
  175. */
  176.  
  177.  
  178. --------------------------------------------------------------------------
  179.  
  180.  
  181.  
  182.  
  183. calc_tots                                                        [CALCTOT.CC]
  184.  
  185. long calc_tots(char *curr_path)
  186. /* This function will accept a valid path name I.E. c:\dos and will return
  187.    the total number of bytes occupied by all files in the specified directory.
  188. */
  189.  
  190.  
  191. --------------------------------------------------------------------------
  192.  
  193.  
  194.  
  195.  
  196. ccolor                                                            [CCOLOR.CC]
  197.  
  198. ccolor(int row, int col, int attr, int len)
  199. /* This routine will change the color attributes of a column of characters.
  200.    row=row to start changing color
  201.    col=col to start changing color
  202.    attr=attribute to change to
  203.    len=number of rows down the screen to change.
  204. */
  205.  
  206.  
  207. --------------------------------------------------------------------------
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.                                   - 1 -
  217.  
  218.  
  219.  
  220. change_to                                                          [CHGTO.CC]
  221.  
  222. change_to(char *dir)
  223. /*
  224. ┌────────────────────────────────────────────────────────────────────┐
  225. │Purpose: To change the current disk drive and directory with        │
  226. │         one call.                                                  │
  227. │ Inputs: Char *dir points to directory to change to. This may       │
  228. │         contain a drive letter if required.                        │
  229. │Outputs: None.                                                      │
  230. │                                                                    │
  231. │ Return:  0 = successful.                                           │
  232. │         -1 = directory not found.                                  │
  233. └────────────────────────────────────────────────────────────────────┘
  234. */
  235.  
  236.  
  237. --------------------------------